package com.symbio.ishenapi.patient.controller;

import com.cloopen.rest.sdk.CCPRestSmsSDK;
import com.symbio.ishenapi.common.controller.BaseController;
import com.symbio.ishenapi.patient.model.TmPatientSmsRecord;
import com.symbio.ishenapi.patient.model.TmPatientUser;
import com.symbio.ishenapi.patient.session.TokenProccessor;
import com.symbio.ishenapi.patient.sms.SendTelMsgUtils;
import io.jboot.web.controller.annotation.RequestMapping;

import java.util.Date;
import java.util.HashMap;
import java.util.List;

@RequestMapping("/sms")
public class TmPatientSmsRecordController extends BaseController {

    public void sendMessage() {
        System.out.print("进入短信发送方法");

        TmPatientSmsRecord tm = (TmPatientSmsRecord) getReqBodyObject(TmPatientSmsRecord.class);
        System.out.print("获取到的手机号码为"+tm.getMobilePhone());
        if (tm.getMobilePhone() != null && !"".equals(tm.getMobilePhone())) {
            HashMap<String, Object> result = null;
            //System.out.println("验证码是：" + randNum);
            //String result = sendMsgTo("17611181702");
            //System.out.println(result);
            CCPRestSmsSDK restAPI = new CCPRestSmsSDK();
            String verificationCode= SendTelMsgUtils.createRandNum();
            restAPI.init("sandboxapp.cloopen.com", "8883");// 初始化服务器地址和端口，沙盒环境配置成sandboxapp.cloopen.com，生产环境配置成app.cloopen.com，端口都是8883.
            restAPI.setAccount("8a48b5514a61a814014a70918f4f0896", "03e3102670d242a393bcba0f8dc0323b");// 初始化主账号名称和主账号令牌，登陆云通讯网站后，可在“控制台-应用”中看到开发者主账号ACCOUNT SID和主账号令牌AUTH TOKEN。
            restAPI.setAppId("aaf98f894b353559014b49d7522d0a78");// 初始化应用ID，如果是在沙盒环境开发，请配置“控制台-应用-测试DEMO”中的APPID。如切换到生产环境，请使用自己创建应用的APPID
            result = restAPI.sendTemplateSMS(tm.getMobilePhone(), "180205", new String[]{verificationCode, "2"});
            System.out.println("SDKTestGetSubAccounts result=" + result);
            //插入新增发送记录
            //BaseTmPatientSmsRecord tm = (BaseTmPatientSmsRecord) getReqBodyObject(BaseTmPatientSmsRecord.class);
            String resultstate = (String) result.get("statusCode");
            if ("000000".equals(resultstate)) {
                tm.setSendState(resultstate); //拼接获取
                tm.setVerificationCode(verificationCode);
                tm.setSourceType("test"); //前端获取
                tm.setSmsDetails("【爱肾网】欢迎使用爱肾客户端，您的验证码是" + verificationCode + "请于2分钟内正确输入");
                tm.setCreateTime(new Date());
                if (tm.save()) {////保存成功
                    renderJsonError(40007);
                } else {////保存失败提示信息
                    renderJsonError(40002,"验证码信息");
                }
            } else {/////短信发送失败 返回错误信息
                System.out.print("短信发送失败 返回错误信息"+tm.getMobilePhone());
                renderJsonError(40008,(String) result.get("statusMsg"));
            }
        }else{////手机号为空返回错误信息
            System.out.print("手机号为空返回错误信息");
            renderJsonError(40003,"手机号码");
        }
    // 再写一个登录接口 比较对应手机号下的验证码是否有效 无效return "提示信息" 有效"查询当前手机号是否注册"
    // 如果已经注册  生成tocken  返回登录成功 由前调抓对应页面 对应userid 返回 如果没有插入到user表  对应手机号字段 返回user id 跳转由前端执行。
}

    //查询校验
    public void judge() {
        TmPatientSmsRecord tm = (TmPatientSmsRecord) getReqBodyObject(TmPatientSmsRecord.class);
        System.out.print("获取到的手机号码为"+tm.getMobilePhone());
        TmPatientUser tm1 = new TmPatientUser();
        tm1.setUserMobilePhone(tm.getMobilePhone());
        System.out.print("获取到的手机号码为"+tm1.getUserMobilePhone());
        TokenProccessor tocken = new TokenProccessor();
        if (TmPatientSmsRecord.dao.findTmPatientSmsRecord(tm).size()>0 && TmPatientSmsRecord.dao.findTmPatientSmsRecord(tm)!=null && !TmPatientSmsRecord.dao.findTmPatientSmsRecord(tm).isEmpty()) {/////验证码校验正确
            System.out.print("验证码校验正确");
            /////判断是否已经注册
            List<TmPatientUser> findPatientList = TmPatientUser.dao.findTmPatientUserByPhone(tm1);
            if (findPatientList.size()>0 && findPatientList!=null && !findPatientList.isEmpty()){/////已注册 生成token 返回校验成功
                tocken.makeToken();
                System.out.print("已注册 生成token 返回校验成功");
                TmPatientUser tpu = findPatientList.get(0);
                renderJsonRet(tpu.getId());
            }else{/////没有注册 需要 保存信息  生成token  返回成功
                System.out.print("没有注册 需要 保存信息  生成token  返回成功");
                if (tm1.save()){
                    renderJsonRet(tm1.getId());
                    tocken.makeToken();
                }else {
                    renderJsonError(40002,"用户信息");
                }
            }
        }else{/////手机或验证码不匹配 返回错误
            System.out.print("手机或验证码不匹配 返回错误");
                renderJsonError(40006);
        }
    }

    public void testErro() {
        renderJsonRet(40001);
    }
}